﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ApuestaJMG.GUI.Contrato;
using Datos.Entidades;
using ApuestasJMG.GUI.Contrato;
using Logica.Comandos.ComandosAdministracionEvento;
using Datos.Entidades.FabricaEntidades;
using Logica.Comandos;
using Logica.FabricaLogica;

namespace ApuestasJMG.GUI.Presentador
{
    public class PresentadorGestionEvento
    {

        private IContratoGestionEvento _EventoCategoria;
        private IContratoAgregarParticipante _EventoParticipante;
        // private IContratoAgregarParticipante _creacionParticipante;
        private List<Entidad> misEventosCategorias = new List<Entidad>();
        private Entidad aaa = new Entidad();

        // <summary>
        /// presentador para hacer llamada a las interfaces de GestionEvento
        /// </summary>
        public PresentadorGestionEvento
            (IContratoGestionEvento obtenereventcat)
        {
            _EventoCategoria = obtenereventcat;
        }

        // <summary>
        /// procedimiento que consulta eventos
        /// </summary>
        /// <param name="usuario">Evento a seleccionar dado categoria</param>
        public void obtenerEventoCategoria(int id)
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoCategoria();
            comando.Id = id;
            (comando as ComandoBuscarEventoCategoria).Ejecutar();
           
            misEventosCategorias = comando.ListaEntidad;
            
            if (misEventosCategorias != null)
            {

                for (int i = 0; i < misEventosCategorias.Count; i++)
                {

                    _EventoCategoria.Evento.Items.Add((misEventosCategorias.ElementAt(i) as Evento).NombreEvento);


                }
                _EventoCategoria.Evento.DataBind();

            }

        }


        // <summary>
        /// procedimiento que consulta eventos
        /// </summary>
        /// <param name="usuario">Participante a seleccionar dado categoria</param>
        public void ConsultarParticipante(int id)
        {

            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoParticipante();
            comando.Id = id;
            (comando as ComandoBuscarEventoParticipante).Ejecutar();
            misEventosCategorias = comando.ListaEntidad;
            _EventoCategoria.Participante.DataSource = misEventosCategorias;
            _EventoCategoria.Participante.DataBind();
        
        }

        // <summary>
        /// procedimiento que consulta eventos
        /// </summary>
        
        public void obtenerEvento2()
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEvento();
            comando.Ejecutar();
            misEventosCategorias = comando.ListaEntidad;
            if (misEventosCategorias != null)
            {

                for (int i = 0; i < misEventosCategorias.Count; i++)
                {

                    _EventoCategoria.Evento.Items.Add((misEventosCategorias.ElementAt(i) as Evento).NombreEvento);

                }
                _EventoCategoria.Evento.DataBind();
            }

        }
        // <summary>
        /// procedimiento que inserta HistorialParticipante
        /// </summary>
        /// <param name="usuario">Evento insertado</param>
        public void InsertarHistorialParticipante(int Posid, int id)
        {

            Entidad crearEvento = FabricaEntidades.ObtenerEvento();
            Entidad agregarcat = FabricaEntidades.ObtenerCategoria();


            (crearEvento as Evento).Fecha_Inicio = _EventoCategoria.FechaI.Text;
            (crearEvento as Evento).Fecha_Fin = _EventoCategoria.FechaF.Text;
            (crearEvento as Evento).Hora = int.Parse(_EventoCategoria.Hora.Text);
            (crearEvento as Evento).Minuto = int.Parse(_EventoCategoria.Minuto.Text);
           // (agregarcat as Participante).Tope = int.Parse(_EventoParticipante.Tope.Text);
            //(agregarcat as Participante).Relacion = int.Parse(_EventoParticipante.Relacion.Text);
            (crearEvento as Evento).FK_Id_Evento = Posid;
            (crearEvento as Evento).FK_Id_Participante = id;
            Comando comandoEvento = FabricaComandoEvento.ObtenerComandoInsertarHistorialParticipante();
            comandoEvento.Entidad = crearEvento;
            Boolean respuestaUsuario = false;

            (comandoEvento as ComandoCrearHistorialParticipante).Ejecutar();
            respuestaUsuario = comandoEvento.Flag;

        }
        // <summary>
        /// procedimiento que obtiene id_evento
        /// </summary>
        /// <param name="usuario">Evento a seleccionar dado nombre</param>
        public int obtenerEventoNOmbre(string nomb)
        {
            Comando comando = FabricaComandoEvento.ObtenerComandoBuscarEventoNombre();
            comando.Tipo = nomb;
            (comando as ComandoBuscarEventoNombre).Ejecutar();
            aaa = comando.Entidad;
            int id = (aaa as Evento).Id_Evento;
            return id;
        }



    }
}